ofsp2026 18_fieldCal
Created time
Mar 28, 2026 08:30 AM
type
Post
status
Published
date
Mar 28, 2026
slug
ofsp2026 18_fieldCal
summary
tags
ofsp2026
OpenFOAM
category
post
icon
password
Place
Last edited time
Mar 28, 2026 09:15 AM
Important
访问 https://aerosand.cc 以获取最近更新。
0. 前言
基于前面的讨论,我们练习一个简单场计算的案例。
本文主要讨论
为计算增加简单的物理场
以 OpenFOAM 的方式管理物理场
练习开发库
编译运行 fieldCal 项目
1. 项目准备
终端输入命令,建立项目
测试初始求解器,提供脚本(参考前文脚本)和说明。
2. 增加物理场
拷贝过来的测试算例并没有温度场,我们给算例添加初始温度场。
2.1. 温度场
温度和压力一样是标量,可以通过拷贝压力场文件,修改后得到温度场文件。
终端输入命令,准备温度场文件
修改后得到的温度场文件为
2.2. 主源码
主源码修改为
2.3. 编译运行
编译运行此项目(注意不要清除温度场文件)。
终端输出如下
终端输入命令,对计算结果可视化
注意到 debug_case/ 的时间步文件夹下出现了新时间步的场文件,以 debug_case/0.3/ 为例,其包含的计算结果文件如下
可以查看各个场文件中的计算结果数值。
Warning
打开 0.3/phi 可以看到并没有计算更新值,其他非 p,U 文件也没有计算更新值。这是因为场在创建时候给定的计算公式只是初始化,并不会随着时间推进而计算更新。所以,需要在主源码的时间循环中去计算需要的场。
3. 项目整理
在 OpenFOAM 实际应用中,一般的
- 场的接入应放入单独的文件 createFields.H
- OpenFOAM 本身提供 createPhi.H
- 自定义方法也放入单独文件,如 calculatePressure.H
所以该应用的文件结构调整后为
3.1. createFields.H
场接入文件 createFields.H 为
3.2. calculatePressure.H
自定义方法 calculatePressure.H 为
3.3. 主源码
主源码整理为
3.4. 编译运行
编译运行,可以看到结果是一样的。
项目整理后,
- 主源码功能划分非常清晰
- 每个功能都更加易于维护
4. 开发库
当某一类方法的实现可以保留为特定功能以便后续使用,所以可以将它们固定为开发库,以供各种项目随时调用。
4.1. 开发库代码
我们建立开发库 computeVelocityPressure 并提供相应文件。
终端输入命令,建立开发库
建立开发库后,项目的文件结构为
开发库声明 calculateVelocityPressure.H 为
开发库定义 calculateVelocityPressure.C 为
4.2. 开发库 Make
开发库 Make/files 内容为
开发库 Make/options 内容为
该库,强调是这个库,在编译的时候,不会使用到其他更多的库,所以 options 中有这些基础库就够了,不需要另外增加。
4.3. 开发库编译
终端输入命令,编译开发库
终端提示开发库编译成功,可以供项目使用。
4.4. 场的接入
保持 createFields.H 代码不变。
4.5. 主源码
主源码 ofsp_18_fieldCal.C 修改为
4.6. 项目 Make
项目 Make/files 内容为
项目 Make/options 内容为
注意开发库的处理,既要“包含”,也要“链接”。既然指明”路径“,也要指明”名称“。
4.7. 编译运行
编译运行项目。
终端输出如下
4.8. 后处理
我们同样可以通过 paraview 可视化计算结果。
终端输入命令,可视化计算结果。
5. 小结
回顾之前的讨论,我们大概可以感受到数值计算的核心要素所在——时间、网格、物理场。有了这些工具之后,我们便可以将数学物理模型构建为数学方程,从而组建线性代数方程,进行数值求解。不要着急,我们距离求解器编程越来越近了。
本文完成讨论
为计算增加简单的物理场
以 OpenFOAM 的方式管理物理场
练习开发库
编译运行 fieldCal 项目
支持我们
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。

Copyright @ 2026 Aerosand
- 课程(文本、图片等):CC BY-NC-SA 4.0
- OpenFOAM 开发代码 :GPL v3
- 其他代码:MIT License
Loading...